﻿/******************CRM.ToChuc.cs********************\
 * Module name: Logic To Chuc
 * Description: Business logic for To Chuc
 * Author: cyworld
\****************************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OODCRM.Dialogs;
using Microsoft.Windows.Controls.Ribbon;
using OODCRM.Common;
using System.Windows;
using OODCRM.ViewModel;

namespace OODCRM
{
    public partial class MainWindow : RibbonWindow
    {
        internal void ToChuc_NewExecuted()
        {
            dicDialogData[CRMDialog.ThemToChuc] = new TOCHUC()
            {
                DOITUONG = new DOITUONG()
                {
                    IdDoiTuong = System.Guid.NewGuid(),
                    ThoiDiemTao = DateTime.Now,
                    ThoiDiemSua = DateTime.Now,
                    DungChung = true,
                    LOAIDOITUONG1 = dataContext.LOAIDOITUONGs.FirstOrDefault(),
                    User = dataContext.Users.FirstOrDefault(),
                    User1 = dataContext.Users.FirstOrDefault(),
                    User2 = dataContext.Users.FirstOrDefault(),
                },
                DIACHI = new DIACHI(),
                DIACHI1 = new DIACHI(),
            };

            dicDialogMode[CRMDialog.ThemToChuc] = DialogMode.Them;

            EnableDialog(CRMDialog.ThemToChuc);
        }

        internal void ToChuc_EditExecuted()
        {
            TOCHUC item = dgrToChuc.SelectedItem as TOCHUC;
            if (item == null) return;

            dicDialogData[CRMDialog.ThemToChuc] = item;

            dicDialogMode[CRMDialog.ThemToChuc] = DialogMode.Sua;

            EnableDialog(CRMDialog.ThemToChuc);
        }

        internal void ToChuc_DeleteExecuted()
        {
            TOCHUC item = dgrToChuc.SelectedItem as TOCHUC;
            if (item == null) return;

            // Check FK before delete
            var x1 = dataContext.TOCHUCs.FirstOrDefault(x => x.MaChuQuan == item.MaHieu) as TOCHUC;
            if (x1 != null)
            {
                MessageBox.Show("Còn tổ chức thuộc chủ quản của tổ chức này! (" + x1.TenToChuc + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var x2 = dataContext.LIENHEs.FirstOrDefault(x => x.MaToChuc == item.MaHieu) as LIENHE;
            if (x2 != null)
            {
                MessageBox.Show("Còn tồn tại liên hệ của tổ chức! (" + x2.HoVaTen + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var x3 = dataContext.CHITIETDOITACCOHOIs.FirstOrDefault(x => x.MaToChuc == item.MaHieu) as CHITIETDOITACCOHOI;
            if (x3 != null)
            {
                MessageBox.Show("Còn cơ hội mà tổ chức này là đối tác! (" + x3.COHOI.TenCoHoi + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var x4 = dataContext.CHITIETDOITHUCOHOIs.FirstOrDefault(x => x.MaToChuc == item.MaHieu) as CHITIETDOITHUCOHOI;
            if (x4 != null)
            {
                MessageBox.Show("Còn cơ hội mà tổ chức này là đối thủ! (" + x4.COHOI.TenCoHoi + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            var x5 = dataContext.COHOIs.FirstOrDefault(x => x.MaToChuc == item.MaHieu) as COHOI;
            if (x5 != null)
            {
                MessageBox.Show("Còn cơ hội liên quan tới tổ chức này! (" + x5.TenCoHoi + ")",
                    "Không thể xoá", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            // Confirm and delete
            if (MessageBox.Show(
                    "Bạn có chắc muốn xoá tổ chức \"" + item.TenToChuc + "\" ?", "Xác nhận xoá",
                    MessageBoxButton.YesNo,
                    MessageBoxImage.Question
                    )
                    == MessageBoxResult.Yes)
            {
                listToChuc.Remove(item);
                dataContext.TOCHUCs.DeleteOnSubmit(item);
                try
                {
                    dataContext.SubmitChanges();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

        private void dgrToChuc_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            if (dgrToChuc.SelectedItems.Count > 0)
            {
                RibbonModel.ToChuc_Edit.IsEnabled = true;
                RibbonModel.ToChuc_Delete.IsEnabled = true;
            }
            else
            {
                RibbonModel.ToChuc_Edit.IsEnabled = false;
                RibbonModel.ToChuc_Delete.IsEnabled = false;
            }
        }
    }
}
